Field
The present application concerns the processing of instructions and data in information processing systems and more particularly a timing method and device located remotely, in particular in a peripheral, for a processing unit, in an information processing system, which is adapted, in particular, for a cluster node.
Description of the Related Art
High Performance Computing (HPC) is being developed for university research and industry alike, in particular in technical fields such as the motor car industry, aeronautics, energy, climatology and life sciences. Modeling and simulation make it possible in particular to reduce development costs and to accelerate the placing on the market of innovative products that are more reliable and consume less energy. For research workers, high performance computing has become an indispensable means of investigation.
This computing is generally conducted on data processing systems called clusters. A cluster typically comprises a set of interconnected nodes. Certain nodes are used to perform computing tasks (compute nodes), others to store data (storage nodes) and one or more others manage the cluster (administration nodes). Each node is for example a server implementing an operating system such as Linux (Linux is a trademark). The connection between the nodes is, for example, made using Ethernet communication links and interconnection networks (for example Infiniband) (Ethernet and Infiniband are trademarks).
FIG. 1 is a diagrammatic illustration of an example of a topology 100 for a cluster of fat-tree type. The latter comprises a set of nodes. The nodes belonging to the set 110 are compute nodes 102 and 104 whereas the nodes of the set 115 being called a service islet, are service nodes 106 (storage nodes and administration nodes). The compute nodes 104 may be grouped together in sub-sets 120 called compute islets.
The nodes are linked together by switches, for example hierarchically. In the example illustrated in FIG. 1, the nodes are connected to first level switches 125 which are themselves linked to second level switches 130 which in turn are linked to third level switches 135.
As illustrated in FIG. 2, each node generally comprises one or more microprocessors, local memories and a communication interface. More specifically, the node 200 comprises a communication bus 202 to which there are connected:
Central Processing Units (CPUs) or microprocessors 204;
components of Random Access Memory (RAM) 206, comprising registers adapted to record variables and parameters created and modified during the execution of programs (as illustrated, each random access memory component may be associated with a microprocessor); and,
communication interfaces 208 adapted to send and to receive data.
The node 200 furthermore possesses internal storage means 210, such as hard disks, able in particular to contain the executable code of programs.
The communication bus allows communication and interoperability between the different elements included in the node 200 or connected to it. The microprocessors 204 control and direct the execution of the instructions of portions of software code of the program or programs. On powering up, the program or programs which are stored in a non-volatile memory, for example a hard disk, are transferred into the random access memory 206.
As with HPC applications, the clusters used for implementing those applications are optimized. In particular, no function based on time, for example a sending function dependent on a maximum waiting time limit, called timeout, is generally provided. This is because these functions are typically based on timers or clocks, the use of which gives rise to excessively high performance penalties on account of the fact that they are generally managed by the operating system used which may therefore be called upon for each utilization. Furthermore, the resolution of these timers is often not sufficiently high for real applications.
To use a timer to implement alarms or enable the sending of time notifications to processes of an HPC application amounts to each process registering with the kernel of the operating system via a call system, known as syscall to be notified of the scheduled time. The notification is made by a signal sent from the kernel to the process or by an operation via a communication channel known as a pipe. However, such an embodiment is often too disadvantageous to be used in practice.
Despite these findings, functions based on time are useful for certain HPC applications, for example medical applications which must perform computations in a very constrained time or applications for weather forecasting, which may require to be dynamically re-parameterized. Such applications need to use timers efficiently to optimize the sequencing and progression of their codes.
There is thus a need to enable the execution of functions based on time, in particular timing functions, in architectures of cluster type.